package dormouse.vfs.event;

/**
 * This mixin contains the support necessary.
 * 
 * @param <L>
 *            The listener
 * @param <E>
 *            The event.
 */
public interface IEventMixin<L, E> {

	/**
	 * Adds a listener to the mixin.
	 * 
	 * @param listener
	 *            the listener to be added.
	 */
	void addListener(L listener);

	/**
	 * Removes a listener from the mixin.
	 * 
	 * @param listener
	 *            the listener to be removed.
	 */
	void removeListener(L listener);

	/**
	 * Notifies all listeners of a given event.
	 * 
	 * @param event
	 *            the event to be communicated to the listeners.
	 */
	void notify(E event);

}
